Collection (qdrant)
from Qdrant
#wip
Point (qdrant)の集合のこと
検索対象のデータをベクトル化して、それらをまとめたもの
RDBで言うtableのようなものmrsekut.icon
同一collection内のvectorは全て同じsizeである必要がある
Distance Metrics (qdrant)もcollectionごとに1つ決める
https://qdrant.tech/documentation/concepts/collections/
名前付きベクトルを使用すると、
単一のポイントに複数のベクトルを持つことができ、
各ベクトルには独自の次元とメトリック要件を設定できます。
Collectionを作成する例
code:_
PUT collections/star_charts
{
"vectors": {
"size": 4,
"distance": "Dot" // Distance Metrics
}
}
GPT-4.icon
🔷 コレクション(Collections)とは?
コレクションは、ベクトルデータの集合体です。検索対象のデータ(画像、テキスト、音声など)をベクトル化(embedding)して、それらをまとめたものがコレクションになります。
同一コレクション内のベクトルは すべて同じ次元数(size) である必要があります。
ベクトル同士の類似度を測るための 距離関数(distance metric) もコレクションごとに1つ決めます。
---
🧮 対応している距離関数(距離の計算方法)
Qdrant は以下の類似度(距離関数)をサポートしています:
table:table
距離関数 意味
---------------- ------
Dot 内積(正規化されていない場合)
Cosine コサイン類似度(正規化して内積として計算)
Euclid ユークリッド距離(L2距離)
Manhattan マンハッタン距離(L1距離)
---
🔀 Multitenancyとコレクションの分け方
単一コレクション + フィルター(推奨)
複数のユーザー(テナント)を1つのコレクションに入れ、payload にユーザー情報を付けてフィルターする。
パフォーマンスが良く、リソース効率的。
複数コレクション(Isolation が必要な場合)
少数の明確に分けたいユースケースがある場合(例:ユーザー数が少なくて明確に分離したいとき)
コストが高くなりやすい(メモリ・管理)
---
🛠 コレクション作成例
code:json
PUT /collections/my_collection
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
追加設定(任意)には以下のようなものがあります:
hnsw_config: 高速近似検索の設定
wal_config: 書き込みログの設定
on_disk_payload: payloadをディスクに保存(RAM節約)
quantization_config: 精度を落として省メモリ・高速化
🧠 複数ベクトル対応(Multi-vector)
1つのPoint (qdrant)(例:商品や文章)に 複数のベクトル を持たせられます。
code:json
"vectors": {
"image": {
"size": 4,
"distance": "Dot"
},
"text": {
"size": 8,
"distance": "Cosine"
}
}
---
🧊 ベクトルをディスク保存(on_disk)
RAMに載せる代わりに、ディスクにベクトルを保存可能
メモリが限られる環境や大規模データに便利
on_disk: true を指定
🧬 Sparse Vectors(疎ベクトル)
特にテキストデータに有用
非常に高次元かつ大半が0のベクトルを扱える
sparse_vectors フィールドで指定、距離は Dot 固定
code:json
"sparse_vectors": {
"text": {}
}
---
🔄 コレクションの更新・パラメータ変更
PATCH メソッドで インデックスや量子化設定の動的更新が可能
例:ベクトルを後からディスクに移す、インデックスの再構築など
---
🪪 エイリアス(Aliases)
コレクションに別名を付けることができる
旧コレクション → 新コレクションへのスムーズな切り替えが可能
code:json
{
"actions": [
{
"create_alias": {
"collection_name": "new_collection",
"alias_name": "production_collection"
}
}
]
}
---
🔍 補足:ステータスと最適化
🟢 green:最適化完了、使用可能
🟡 yellow:最適化中
⚫ grey:最適化保留中(操作で再開)
🔴 red:致命的エラー
---
📊 ポイント数・ベクトル数
points_count: 登録されたレコード数
vectors_count: ベクトルの数(multi-vectorの時に増える)
indexed_vectors_count: インデックスに実際載ってる数
※ これらはあくまで近似値。整合性を取るには count API を使用。